package com.codefish;

public class MethodOverload0606 {

    /*
    对于功能类似的方法来说，因为参数列表不一样，却需要记住那么多不同的方法名称，太麻烦
    方法的重载：多个方法的名称一样，但是参数列表不一样
    好处：只需要记住唯一一个方法名称，就可以实现类似的多个功能
    方法重载与下列因素相关：
    1.参数个数不同
    2.参数类型不同
    3.参数的多类型顺序不同
    方法重载与下列因素无关：
    1.与参数的名称无关
    2.与方法的返回值类型无关

     */


    public static void main(String[] args) {

        /*System.out.println(sunTwo(10,20) );
        System.out.println(sunThree(10,20,30) );
        System.out.println(sunFour(10,20,30,40) );*/
        System.out.println(sun(10,20));
        System.out.println(sun(10,20,30));
        System.out.println(sun(10,20,30,40));
    }

    /*public static int sunTwo(int a,int b){
        return a + b;
    }

    public static int sunThree(int a,int b,int c){
        return a + b + c;
    }

    public static int sunFour(int a,int b,int c,int d){
        return a + b + c + d;
    }*/

    public static int sun(int a,double b){
        return (int)(a + b);
    }

    public static int sun(double a,int b){
        return (int)(a + b);
    }

    public static int sun(double a,double b){
        return (int)(a + b);
    }

/*  与方法的返回值类型无关  错误写法
    public static double sun(int a,int b){
        return (a + b);
    }
*/
    public static int sun(int a,int b){
        System.out.println("有两个参数的方法");
        return a + b;
    }

/*  与参数的名称无关  错误写法
    public static int sun(int x,int y){
        return x + y;
    }
*/

    public static int sun(int a,int b,int c){
        System.out.println("有三个参数的方法");
        return a + b + c;
    }

    public static int sun(int a,int b,int c,int d){
        System.out.println("有四个参数的方法");
        return a + b + c + d;
    }


}
